A variety of new conceptual methods ramified for the computer network require various hardware resources. Different tasks consume different numbers of resources, such as CPU, link bandwidth, disk, etc. Although packet-level bandwidth allocation in the router has been studied extensively, users require different resources on task-level, making it more difficult for multi-resource scheduling. For example, intrusion detection is usually limited by CPU, bottleneck of software router exists in the memory, and the limited resource of forwarding big packet is the link bandwidth. Therefore, an intermediate box needs to be able to make right decisions for scheduling various resources.
Some existing classical single resource scheduling algorithms are EDF (Early Deadline First) algorithm and SJF (Short Job First) algorithm, etc. The EDF algorithm determines priority of the task according to the start time and deadline of the task. The earlier the deadline is, the higher the priority is. Core of the SJF algorithm is that each of all tasks has a priority. The priority of a short task is higher than that of a long task. The operation system always arranges the task with high priority to run first. Besides, there are FCFS (first come first serve) algorithm and time-slice polling algorithm, etc.
Currently, a multi-resource scheduling algorithm is presented. Based on the fairness on dominant resource, a dominant resource, i.e., a resource which is used mostly, is chosen from each task. Therefore, their dominant resources of different tasks can be fairly distributed. However, although this method can ensure fairness, for the whole system, average completion time of the task flow is too long. It means that the user has to wait for a long time, resulting in poor user experience.